package com.itheima.tliaswebmanagement.controller;

import com.itheima.tliaswebmanagement.annotation.OperationLog;
import com.itheima.tliaswebmanagement.pojo.Clazz;
import com.itheima.tliaswebmanagement.pojo.PageResult;
import com.itheima.tliaswebmanagement.pojo.Result;
import com.itheima.tliaswebmanagement.service.ClazzService;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/clazzs")
public class ClazzController {
    @Autowired
    private ClazzService clazzService;

    @GetMapping("/list")
    public Result findAll() {
        List<Clazz> list = clazzService.findAll();
        return Result.success(list);
    }
    @GetMapping
    public Result page(Clazz clazz){
        /**
         * 为什么要返回PageResult，而不是List<Clazz>？
         * 1.分页展示数据
         * 当学生数据量较大时，一次性返回所有数据会影响性能和用户体验
         * 分页可以将数据分批展示，提高系统响应速度和用户体验
         * 2.封装分页信息 PageResult 类包含两个重要属性：
         * Long total: 总记录数
         * List rows: 当前页的数据列表
         */
        PageResult pageResult = clazzService.page(clazz);
        return Result.success(pageResult);
    }

    @GetMapping("/{id}")
    public Result findById(@PathVariable Integer id) {
        System.out.println(id);
        Clazz clazz = clazzService.findById(id);
        return Result.success(clazz);
    }

    @OperationLog
    @DeleteMapping("/{id}")
    public Result deleteById(@PathVariable Integer id) {
        clazzService.deleteById(id);
        return Result.success();
    }

    @OperationLog
    @PostMapping
    //接收的是一个json格式的数据，因此需要加@RequestBody注解???
    public Result add(@RequestBody Clazz clazz) {
        clazzService.add(clazz);
        return Result.success();
    }

    @OperationLog
    @PutMapping
    public Result update(@RequestBody Clazz clazz) {
        clazzService.update(clazz);
        return Result.success();
    }

}
